<?php

/**
 * Controlleur qui se charge d'afficher l'index du site. 
 */
class IndexController extends Zend_Controller_Action {
    protected $_logger;
    protected $_translator;
    
    /**
     * Initialise les variables utiles aux différents controllers et éventuellement vue 
     */
    public function init() {
        $this->_logger = Zend_Registry::get('logger');
        $this->_translator = Zend_Registry::get('Zend_Translate');
        $this->view->translator = $this->_translator;
    }

    /**
     * Se charge d'afficher le formulaire d'authentification
     */
    public function indexAction() {
        $form = new ZendTremplin_Form_Connection();
        $formResponse = '';
        
//        $request = $this->getRequest();
//        if ($request->isPost()) {
//            if ($form->isValid($request->getPost())) {
//                $formData = $request->getPost();
//                $setup = array(
//                    'method' => 'connection',
//                    'params' => array($formData['login'], $formData['pwd']),
//                    'id' => rand()
//                );
//                $json = Zend_Json::encode($setup);
//
//                $client = new Zend_Http_Client('http://'.$request->getHttpHost().'/server.php');
//                $client->setRawData($json);
//                $response = $client->request('POST');
//                
//                $jsonResult = Zend_Json::decode($response->getBody());
//                if($jsonResult == NULL) {
//                    $formResponse = Zend_Registry::get('Zend_Translate')->_('error_communication_server');
//                }
//                else {
//                    if($jsonResult['result']==='success') {
//                        $formResponse = 'Connection autorisée';
//                    }
//                    else {
//                        $formResponse = Zend_Registry::get('Zend_Translate')->_('error_authentification');
//                    }
//                }
//            }
//        }
        $this->view->baseUrl = $this->getRequest()->getBaseUrl();
        $this->view->formResponse = $formResponse;
        $this->view->form = $form;
    }

    /**
     * Vérifie la validité du formulaire et retourne dans le helper un JSon en réponse
     * (Cette action est utilisée par un appel ajax qui vérifie la validité du formulaire)
     * Le JSON retourné est le suivant (seul le champ 'status' est toujours présent)
     * { 
     *      "status":"error|success",
     *      "messages":{
     *          "login":"error message",
     *          "pwd":"error message"},
     *      "redirect":"url"
     * }
     */
    public function authentificationAction() {
        $request = $this->getRequest();

        $result = array('status' => 'error');
        if ($request->isPost()) {
            $postData = $request->getPost();
            if (isset($postData['login']) && isset($postData['pwd'])) {
                // On vérifie la validité du formulaire grâce au ZendTremplin_Form_Connection
                // dans lequel sont définis les validate
                $form = new ZendTremplin_Form_Connection();
                if (!$form->isValid($request->getPost())) { // Erreur dans l'authentification
                    $formMessages = $form->getMessages();
                    $errorMassages = array();
                    
                    // Si il y a une erreur au niveau du login
                    if (isset($formMessages['login'])) {
                        foreach ($formMessages['login'] as $key => $value) {
                            $errorMassages['login'] = $value;
                            break;
                        }
                    }
                    // Si il y a une erreur au niveau du pwd
                    if (isset($formMessages['pwd'])) {
                        foreach ($formMessages['pwd'] as $key => $value) {
                            $errorMassages['pwd'] = $value;
                            break;
                        }
                    }
                    $result = array(
                        'status' => 'error',
                        'messages' => $errorMassages,
                    );
                } else { // L'authentification est correcte
                    Zend_Auth::getInstance()->getStorage()->write($postData['login']); // Sauvegarde de l'authenfification
                    $result = array(
                        'status' => 'success',
                        'redirect' => '/myspace/'
                    );
                }
            }
        }
        
        $this->_helper->json(Zend_Json::encode($result));
    }

}

